www.gusucode.com > 基于Visual C++高级界面特效制作百例源码程序 > 基于Visual C++高级界面特效制作百例源码程序/code/char19/property_list_control/FPSPropertyList.cpp

    // FPSPropertyList.cpp : implementation file
//

#include "stdafx.h"
#include "FPSPropertyList.h"
#include "MemDC.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
CFPSPropertyList::CFPSPropertyList()
{
	m_iVisibleItemCount = 0;
	m_dwTopItem = 1;
	m_dwItemCounter = 0;
	m_nBackColor = RGB(192, 192, 192);
	m_nTextColor = RGB(0, 0, 0);
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
CFPSPropertyList::~CFPSPropertyList()
{
	RemoveAllItems();
}


BEGIN_MESSAGE_MAP(CFPSPropertyList, CWnd)
	//{{AFX_MSG_MAP(CFPSPropertyList)
	ON_WM_PAINT()
	ON_WM_SIZE()
	ON_WM_VSCROLL()
	ON_WM_LBUTTONDOWN()
	ON_WM_DESTROY()
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);

	CRect ScrollRect;
	CRect ClientRect;

	GetClientRect(ClientRect);
	ScrollRect.SetRect(ClientRect.Width() - 20,
						5,
						ClientRect.Width() - 5,
						ClientRect.Height() - 5);

	m_nScrollBar.Create(WS_CHILD | WS_VISIBLE | SBS_VERT,
						ScrollRect,
						this,
						SCROLLBAR_ID);

	return TRUE;
}


/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::OnPaint() 
{
	CPaintDC dc(this); // device context for painting

	RedrawWindow(&dc);
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::OnSize(UINT nType, int cx, int cy) 
{
	CWnd::OnSize(nType, cx, cy);

	CRect ClientRect;
	GetClientRect(ClientRect);

	if (!IsWindow(m_nScrollBar.m_hWnd))
		return;

	NotifyItems();
	m_nScrollBar.SetWindowPos(NULL,
								ClientRect.Width() - 20,
								5,
								15,
								ClientRect.Height() - 10,
								SWP_SHOWWINDOW);


}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	switch (nSBCode)
	{
	case SB_BOTTOM:
		{
			m_dwTopItem = m_dwItemCounter - m_iVisibleItemCount + 1;
			break;
		}
	case SB_TOP:
		{
			m_dwTopItem = 1;
			break;
		}
	case SB_LINEDOWN:
		{
			m_dwTopItem++;
			if (m_dwTopItem > (m_dwItemCounter - m_iVisibleItemCount + 1))
				m_dwTopItem = m_dwItemCounter - m_iVisibleItemCount + 1;
			break;
		}
	case SB_LINEUP:
		{
			m_dwTopItem--;
			if (m_dwTopItem < 1)
				m_dwTopItem = 1;
			break;
		}
	case SB_PAGEDOWN:
		{
			m_dwTopItem = m_dwTopItem + m_iVisibleItemCount - 1;
			if (m_dwTopItem > (m_dwItemCounter - m_iVisibleItemCount + 1))
				m_dwTopItem = m_dwItemCounter - m_iVisibleItemCount + 1;
			break;
		}
	case SB_PAGEUP:
		{
			if (((int)m_dwTopItem - (m_iVisibleItemCount - 1)) < 1)
			{
				m_dwTopItem = 1;
			}
			else
			{
				m_dwTopItem = m_dwTopItem - (m_iVisibleItemCount - 1);
			}
			break;
		}
	}

	m_nScrollBar.ShowWindow(FALSE);
	CWnd::OnVScroll(nSBCode, nPos, pScrollBar);
	RedrawWindow();

	m_nScrollBar.ShowWindow(TRUE);
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
DWORD CFPSPropertyList::AddItem(CFPSPropertyListItem * pItem)
{
	m_nItemList.AddTail(pItem);

	m_dwItemCounter++;
	pItem->m_dwID = m_dwItemCounter;
	pItem->m_bAutoDelete = FALSE;
	pItem->SetTextColor(m_nTextColor);
	pItem->SetBackColor(m_nBackColor);
	
	return m_dwItemCounter;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::RedrawWindow(CDC * pDC)
{
	CMemDC		DrawDC(pDC);
	CRect		ClientRect;
	POSITION	CurrentPos;
	CFPSPropertyListItem* pEntry;
	int			Y;

	if (!IsWindow(m_hWnd))
		return;

	m_iVisibleItemCount = 0;

	DrawSolidBackground(&DrawDC);
	MakeAllItemsInvisible();

	Y = 3;

	GetClientRect(ClientRect);

	CurrentPos = m_nItemList.GetHeadPosition();
	while (CurrentPos != NULL)
	{
		pEntry = m_nItemList.GetNext(CurrentPos);
		if (pEntry->m_dwID >= m_dwTopItem)
		{
			CRect ItemRect;
			ItemRect.SetRect(3, Y, ClientRect.Width() - 6, Y + 15);
			pEntry->m_pParent = this;
			pEntry->SetItemRect(ItemRect);
			if (Y + 18 < ClientRect.Height())
			{
				pEntry->DrawItem(&DrawDC);
				pEntry->m_bIsVisible = TRUE;
				m_iVisibleItemCount++;
			}
			else
			{
				pEntry->m_bIsVisible = FALSE;
			}
			Y = Y + 16;
		}
		else
		{
			pEntry->m_bIsVisible = FALSE;
		}
	}

	if (m_iVisibleItemCount == (int)m_dwItemCounter)
	{
		m_nScrollBar.ShowWindow(FALSE);
	}
	else
	{
		m_nScrollBar.SetScrollRange(1, m_dwItemCounter, TRUE);
		if (m_dwTopItem == 1)
		{
			m_nScrollBar.SetScrollPos(1);
		}
		else if (m_dwTopItem == (m_dwItemCounter - m_iVisibleItemCount + 1))
		{
			m_nScrollBar.SetScrollPos(m_dwItemCounter);
		}
		else
		{
			int pos = m_dwTopItem + (m_iVisibleItemCount / 2);
			m_nScrollBar.SetScrollPos(pos);
		}
		EnableScrollBar(SCROLLBAR_ID, TRUE);
		m_nScrollBar.EnableScrollBar();
		m_nScrollBar.ShowScrollBar();
	}
}


/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::RemoveAllItems()
{
	POSITION		CurrentPos;
	CFPSPropertyListItem* pEntry;

	CurrentPos = m_nItemList.GetHeadPosition();
	while (CurrentPos != NULL)
	{
		pEntry = m_nItemList.GetNext(CurrentPos);
		if (pEntry->m_bAutoDelete)
			delete pEntry;
	}
	m_nItemList.RemoveAll();
	m_dwItemCounter = 0;
	m_dwTopItem = 1;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::DrawSolidBackground(CDC * pDC)
{
	CRect	ClientRect;

	GetClientRect(ClientRect);

	pDC->FillSolidRect(0,
						0,
						ClientRect.Width(),
						ClientRect.Height(),
						m_nBackColor);
	pDC->Draw3dRect(0, 
					0, 
					ClientRect.Width(), 
					ClientRect.Height(),
					RGB(255, 255, 255),
					RGB(0, 0, 0));
	pDC->Draw3dRect(1, 
					1, 
					ClientRect.Width() - 2, 
					ClientRect.Height() - 2,
					RGB(255, 255, 255),
					RGB(0, 0, 0));
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::OnLButtonDown(UINT nFlags, CPoint point) 
{
	POSITION	CurrentPos;
	CFPSPropertyListItem* pEntry;
	BOOL		Found = FALSE;

	CurrentPos = m_nItemList.GetHeadPosition();
	while ((CurrentPos != NULL))
	{
		pEntry = m_nItemList.GetNext(CurrentPos);
		if (pEntry->OnClick(point))
			Found = TRUE;
	}
	
	CWnd::OnLButtonDown(nFlags, point);
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::OnDestroy() 
{
	NotifyItems();

	CWnd::OnDestroy();
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::OnClose() 
{
	NotifyItems();
	
	CWnd::OnClose();
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::NotifyItems()
{
	POSITION		CurrentPos;
	CFPSPropertyListItem* pEntry;

	CurrentPos = m_nItemList.GetHeadPosition();
	while (CurrentPos != NULL)
	{
		pEntry = m_nItemList.GetNext(CurrentPos);
		CPoint pt(-1, -1);
		pEntry->OnClick(pt);
	}

}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::MakeAllItemsInvisible()
{
	POSITION				CurrentPos;
	CFPSPropertyListItem*	pEntry;

	CurrentPos = m_nItemList.GetHeadPosition();
	while (CurrentPos != NULL)
	{
		pEntry = m_nItemList.GetNext(CurrentPos);
		pEntry->m_bIsVisible = FALSE;
	}
}


/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItem(DWORD dwID, CFPSPropertyListItem * pItem)
{
	pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
CFPSPropertyListItem* CFPSPropertyList::GetItemByID(DWORD dwID)
{
	POSITION		CurrentPos;
	CFPSPropertyListItem* pEntry;
	BOOL			bFound = FALSE;

	CurrentPos = m_nItemList.GetHeadPosition();
	while ((CurrentPos != NULL) && (!bFound))
	{
		pEntry = m_nItemList.GetNext(CurrentPos);
		if (pEntry->m_dwID == dwID)
			bFound = TRUE;
	}

	if (!bFound)
	{
		return NULL;
	}
	else
	{
		return pEntry;
	}
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
DWORD CFPSPropertyList::GetItemData(DWORD dwID)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return NULL;

	return pItem->GetItemData();
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetupItem(DWORD dwID, PROPERTYITEMSETUP * pSetupInfo)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->Setup(pSetupInfo);

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemData(DWORD dwID, DWORD Data)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->SetItemData(Data);

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
DWORD CFPSPropertyList::AddItem(PROPERTYITEMSETUP * pSetupInfo)
{
	CFPSPropertyListItem* pItem = new CFPSPropertyListItem;

	pItem->Setup(pSetupInfo);

	m_dwItemCounter++;
	pItem->m_dwID = m_dwItemCounter;
	pItem->m_bAutoDelete = TRUE;

	m_nItemList.AddTail(pItem);
	
	return m_dwItemCounter;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemInfo(DWORD dwID, PROPERTYITEMSETUP & Setup)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->GetSetup(&Setup);

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::AboutToChange()
{
	NotifyItems();
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::RedrawWindow()
{
	CClientDC dc (this);

	RedrawWindow(&dc);
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::Create(DWORD dwStyle, const RECT & rect, CWnd * pParentWnd, UINT nID, CCreateContext * pContext)
{
	return Create(NULL, NULL, dwStyle, rect, pParentWnd, nID, pContext);
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::RemoveItem(DWORD dwItemID)
{
	CFPSPropertyListItem* pEntry = GetItemByID(dwItemID);

	if (pEntry)
	{
		POSITION Pos = m_nItemList.Find(pEntry);
		if (Pos)
		{
			m_nItemList.RemoveAt(Pos);
			delete pEntry;
			return TRUE;
		}
		return FALSE;
	}
	else
	{
		return FALSE;
	}
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
CFPSPropertyListItem* CFPSPropertyList::GetItemByName(LPCSTR lpszName)
{
	POSITION CurrentPos;
	CFPSPropertyListItem* pEntry;
	BOOL bFound = FALSE;

	CurrentPos = GetFirstItemPosition();
	while (CurrentPos != NULL && !bFound)
	{
		pEntry = GetNextItem(CurrentPos);
		if (pEntry->m_strName == lpszName)
			bFound = TRUE;
	}

	if (bFound)
		return pEntry;

	return NULL;

}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(DWORD dwID, CString & strValue)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	strValue = pItem->GetTextValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(LPCSTR lpszName, CString & strValue)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	strValue = pItem->GetTextValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(DWORD dwID, COLORREF & Value)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	Value = pItem->GetColorValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(LPCSTR lpszName, COLORREF & Value)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	Value = pItem->GetColorValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(DWORD dwID, LOGFONT & Value)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	Value = pItem->GetFontValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(LPCSTR lpszName, LOGFONT & Value)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	Value = pItem->GetFontValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(DWORD dwID, long & lValue)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	lValue = pItem->GetLongValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(LPCSTR lpszName, long & lValue)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	lValue = pItem->GetLongValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(DWORD dwID, int & iValue)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	iValue = pItem->GetIntegerValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemValue(LPCSTR lpszName, int & iValue)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	iValue = pItem->GetIntegerValue();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
DWORD CFPSPropertyList::AddItem(LPCSTR lpszName, DWORD dwType, DWORD dwData)
{
	PROPERTYITEMSETUP	ItemInfo;

	ItemInfo.strName = lpszName;
	ItemInfo.dwType = dwType;
	ItemInfo.dwData = dwData;
	ItemInfo.lLongValue = 0;
	ItemInfo.iIntegerValue = 0;
	ItemInfo.bAllowComboEdit = FALSE;
	ItemInfo.bFileOpenDialog = TRUE;
	ItemInfo.bBoolValue = FALSE;
	ItemInfo.ColorValue = RGB(0, 0, 0);
	ItemInfo.FontValue.lfHeight = 80;
	ItemInfo.FontValue.lfWidth = 0;
	ItemInfo.FontValue.lfEscapement = 0;
	ItemInfo.FontValue.lfOrientation = 0;
	ItemInfo.FontValue.lfWeight = 400;
	ItemInfo.FontValue.lfItalic = FALSE;
	ItemInfo.FontValue.lfUnderline = FALSE;
	ItemInfo.FontValue.lfStrikeOut = FALSE;
	ItemInfo.FontValue.lfCharSet = ANSI_CHARSET;
	ItemInfo.FontValue.lfOutPrecision = OUT_DEFAULT_PRECIS;
	ItemInfo.FontValue.lfClipPrecision = OUT_DEFAULT_PRECIS;
	ItemInfo.FontValue.lfQuality = PROOF_QUALITY;
	ItemInfo.FontValue.lfPitchAndFamily = DEFAULT_PITCH;
	strcpy(ItemInfo.FontValue.lfFaceName, "Arial");

	return AddItem(&ItemInfo);
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::IsItemVisible(DWORD dwItem)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwItem);
	if (!pItem)
		return FALSE;

	return pItem->IsVisible();
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::IsItemVisible(LPCSTR lpszName)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	return pItem->IsVisible();
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemRect(DWORD dwItem, CRect & rect)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwItem);
	if (!pItem)
		return FALSE;

	rect = pItem->m_nItemRect;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::GetItemRect(LPCSTR lpszName, CRect & rect)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	rect = pItem->m_nItemRect;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(DWORD dwID, LPCSTR lpszValue)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->m_strTextValue = lpszValue;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(LPCSTR lpszName, LPCSTR lpszValue)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	pItem->m_strTextValue = lpszValue;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(DWORD dwID, long lValue)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->m_lLongValue = lValue;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(LPCSTR lpszName, long lValue)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	pItem->m_lLongValue = lValue;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(DWORD dwID, int iValue)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->m_iIntegerValue = iValue;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(LPCSTR lpszName, int iValue)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	pItem->m_iIntegerValue = iValue;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(DWORD dwID, LOGFONT Value)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->m_nFontValue = Value;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(LPCSTR lpszName, LOGFONT Value)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	pItem->m_nFontValue = Value;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(DWORD dwID, COLORREF Value)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->m_nColorValue = Value;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValue(LPCSTR lpszName, COLORREF Value)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	pItem->m_nColorValue = Value;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::SetTextColor(COLORREF NewColor)
{
	POSITION CurrentPos;
	CFPSPropertyListItem* pEntry;

	CurrentPos = GetFirstItemPosition();
	while (CurrentPos != NULL)
	{
		pEntry = GetNextItem(CurrentPos);
		pEntry->SetTextColor(NewColor);
	}

	m_nTextColor = NewColor;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
void CFPSPropertyList::SetBackColor(COLORREF NewColor)
{
	POSITION CurrentPos;
	CFPSPropertyListItem* pEntry;

	CurrentPos = GetFirstItemPosition();
	while (CurrentPos != NULL)
	{
		pEntry = GetNextItem(CurrentPos);
		pEntry->SetBackColor(NewColor);
	}

	m_nBackColor = NewColor;
}


/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValueList(DWORD dwID, CStringList & ValueList)
{
	CFPSPropertyListItem* pItem = GetItemByID(dwID);
	if (!pItem)
		return FALSE;

	pItem->m_nComboItemList.AddTail(&ValueList);

	return TRUE;
}

/////////////////////////////////////////////////////////////////////
//					APPLICATION FUCNTION
/////////////////////////////////////////////////////////////////////
BOOL CFPSPropertyList::SetItemValueList(LPCSTR lpszName, CStringList & ValueList)
{
	CFPSPropertyListItem* pItem = GetItemByName(lpszName);
	if (!pItem)
		return FALSE;

	pItem->m_nComboItemList.AddTail(&ValueList);

	return TRUE;
}